package cc.web.vaaking.common;

import cc.web.vaaking.common.constant.SysConstant;
import cn.hutool.cache.Cache;
import cn.hutool.cache.CacheUtil;
import cn.hutool.cache.impl.TimedCache;

public class SysCache {

    static TimedCache<String, Object> timedCache = CacheUtil.newTimedCache(SysConstant.cacheTime);
    static Cache<String, Object> lruCache = CacheUtil.newLRUCache(SysConstant.cacheCount);
    static {
        timedCache.schedulePrune(5);
    }

    /**
     * 添加超时缓存
     * @param name 缓存名
     * @param obj 缓存对象
     */
    public static void addTimeCache(String name, Object obj) {
        timedCache.put(name, obj);
    }

    /**
     *  获取超时缓存
     * @param name
     * @return
     */
    public static Object getTimeCache(String name) {
        return timedCache.get(name);
    }

    /**
     * 添加队列缓存（LRU最近最少使用）
     * @param name
     * @param obj
     */
    public static void addCache(String name, Object obj) {
        lruCache.put(name, obj);
    }

    /**
     * 获取队列缓存（LRU最近最少使用）
     * @param name
     */
    public static Object getCache(String name) {
        return lruCache.get(name);
    }

    /**
     * 移除队列缓存（LRU最近最少使用）
     * @param name
     */
    public static void removeTimeCache(String name){
        timedCache.remove(name);
    }

    /**
     * 移除队列缓存（LRU最近最少使用）
     * @param name
     */
    public static void removeCache(String name){
        lruCache.remove(name);
    }
}
